package com.achievement.domain.dto;

import com.achievement.domain.dto.author.PatentAuthorDTO;
import com.common.validate.edit;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;

@Data
@ApiModel(value = "专利DTO")
public class PatentDTO {
    @ApiModelProperty(value = "id")
    @NotNull(message = "id不能为空", groups = {edit.class})
    private String id;
    @ApiModelProperty(value = "申请号")
    private String applyCode;
    @ApiModelProperty(value = "申请日")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date applyDate;
    @ApiModelProperty(value = "授权公告日")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date authorizeDate;
    @ApiModelProperty(value = "专利名称")
    private String name;
    @ApiModelProperty(value = "")
    private String lawStatus;
    @ApiModelProperty(value = "")
    private String agency;
    @ApiModelProperty(value = "代理公司ID")
    private String agencyId;
    @ApiModelProperty(value = "专利公开日")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date openDate;
    @ApiModelProperty(value = "专利授权公告号")
    private String authorizeCode;
    @ApiModelProperty(value = "专利公开号")
    private String openCode;
    @ApiModelProperty(value = "申请人")
    private String applyInfo;
    @ApiModelProperty(value = "")
    private String agent;
    @ApiModelProperty(value = "专利类型Id")
    private String typeId;
    @ApiModelProperty(value = "")
    private String numOfWeights;
    @ApiModelProperty(value = "IPC主分类号")
    private String patentIpc;
    @ApiModelProperty(value = "")
    private String unauthorizedReasons;
    @ApiModelProperty(value = "")
    private String causesOfFailure;
    @ApiModelProperty(value = "")
    private String statusDate;
    @ApiModelProperty(value = "所属单位ID")
    private String unitId;
    @ApiModelProperty(value = "专利范围")
    private String scopeId;
    @ApiModelProperty(value = "专利状态")
    private String stateId;
    @ApiModelProperty(value = "学校署名")
    private String schoolSign;
    @ApiModelProperty(value = "专利权人")
    private String patentee;
    @ApiModelProperty(value = "专利权状态")
    private String invalidFlag;
    @ApiModelProperty(value = "")
    private String reductionRate;
    @ApiModelProperty(value = "合作类型")
    private String cooperationType;
    @ApiModelProperty(value = "是否职务专利")
    private String isDuty;
    @ApiModelProperty(value = "是否PCT专利")
    private String isPct;
    @ApiModelProperty(value = "PCT专利名称")
    private String pctName;
    @ApiModelProperty(value = "PCT专利申请号")
    private String pctCode;
    @ApiModelProperty(value = "PCT专利申请日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date pctDate;
    @ApiModelProperty(value = "PCT专利优先权日")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date priorityDate;
    @ApiModelProperty(value = "进入国家")
    private String enterCountry;
    @ApiModelProperty(value = "")
    private String note;
    @ApiModelProperty(value = "附件---代理信息")
    private String fileIds;
    @ApiModelProperty(value = "")
    private String divisionId;
    @ApiModelProperty(value = "审核状态 -1:暂存,1:审批中,2:审批通过,3:审批不通过")
    private String checkstatus;
    @ApiModelProperty(value = "审核时间")
    private String checkdate;
    @ApiModelProperty(value = "审核人名字")
    private String checker;
    @ApiModelProperty(value = "是否代理")
    private String isAgency;
    @ApiModelProperty(value = "通讯发明人")
    private String txAuthor;
    @ApiModelProperty(value = "通讯发明人电话")
    private String txAuthorTel;
    @ApiModelProperty(value = "")
    private String agencyStatus;
    @ApiModelProperty(value = "联合申请知识产权协议书附件")
    private String joinFileId;
    @ApiModelProperty(value = "专利证书附件")
    private String crednetialFileId;
    @ApiModelProperty(value = "国家地区")
    private String region;
    @ApiModelProperty(value = "")
    private String completedatastatus;
    @ApiModelProperty(value = "")
    private String inventorMatchingState;
    @ApiModelProperty(value = "代理公司名称")
    private String agencyName;
    @ApiModelProperty(value = "专利发明人列表")
    private List<PatentAuthorDTO> authorList;

    @ApiModelProperty(value = "提交类型 -> -1:暂存,1:提交,2:保存并通过")
    private Integer submitType;

    private Boolean isAuditor;

    private String taskId;

}
